package cn.nexd.location.indoor.listener;

import cn.nexd.location.indoor.NexdIndoorLocation;
import cn.nexd.location.indoor.NexdIndoorLocationConfiguration;
import cn.nexd.location.indoor.NexdIndoorLocationResult;

/**
 * Created by codngfish on 16/5/5.
 */
public interface NexdIndoorLocationListener extends IndoorLocationEventListener {
    /**
     * 定位开始的时候调用.在每次显式的调用 startLocation 之后调用
     *
     * @param buildingId
     * @param floorId
     * @param locationMode
     */
    void onLocationStart(long buildingId, long floorId, NexdIndoorLocationConfiguration.LocationMode locationMode);

    /**
     * 成功定位出坐标点之后回调.
     *
     * @param indoorLocationResult
     */
    void onLocationSuccess(NexdIndoorLocationResult indoorLocationResult);


    /**
     * 定位失败之后回调.但是不影响到接下来的定位.
     * <p>
     * 定位过程中没有定位到坐标点 或是定位设备正在初始化的情况下会调用.一般不需要处理.
     *
     * @param locationState
     */
    void onLocationFailed(NexdIndoorLocation.LocationState locationState);

    /**
     * 定位中断之后回调,在设备不能完成定位的情况下调用.
     * <p>
     * 定位过程中出现一些灾难性事故或者当前设备不具备定位能力的时候调用,开发人员需要自行处理该消息.
     *
     * @param locationState
     */
    void onLocationInterrupt(NexdIndoorLocation.LocationState locationState);
}
